package main

import (
    "fmt"
    "log"
    "net"
    "net/http"
    "net/rpc"
    "os"
)


// 算数运算结构体
type Arith struct {
}

// 算数运算请求结构体
type ArithRequest struct {
    A int
    B int
}

// 算数运算响应结构体
type ArithResponse struct {

    Result int
}


// 加法运算方法
func (this *Arith) Add(req ArithRequest, res *ArithResponse) error {
    res.Result = req.A + req.B
    return nil
}

func main() {
    rpc.Register(new(Arith)) // 注册rpc服务
    rpc.HandleHTTP()         // 采用http协议作为rpc载体，即http的处理函数

    lis, err := net.Listen("tcp", "0.0.0.0:30000")
    if err != nil {
        log.Fatalln("fatal error: ", err)
    }

    fmt.Fprintf(os.Stdout, "%s", "start connection")

    http.Serve(lis, nil)
}
